/*
 * Curva.h
 *
 *  Created on: 08/12/2009
 *      Author: leonardo
 */

#ifndef CURVA_H_
#define CURVA_H_
#include <GL/glut.h>
#include "Color.h"
#include "Punto.h"
#include <vector>

class Curva
{
	private:
		  std::vector<Punto> ptsControl;
		  Color colorPtsControl;
		  Color colorPts;
		  std::vector<Punto> ptsCurva;
	public:
		void setPuntosControl(const std::vector<Punto> & pts);
		void agregarPuntoControl(Punto punto);
		void agregarPuntoCurva(Punto punto);
		std::vector<Punto> getPtsControl();
		Punto getPunto(int indice);
		unsigned getCantidadPuntosControl();
		unsigned getCantidadPuntos();
		Punto operator[](int indice);
		Punto getTangente(unsigned indice);
		void setColor(const Color& color);
		void setColorControl(const Color & color);
		virtual void dibujarCurva() = 0;
		virtual void dibujarCurvaRandom(Punto inicio,Punto fin) = 0;
		void pintarCurva();
		virtual ~Curva();
};

#endif /* CURVA_H_ */
